The rise of smart phones has been phenomenal in the last decade. They have come a long way from merely a two way radio to an electronic device that keeps you connected to all the information throughout the day. The demand for performance has hence been increasing at a much faster rate than the corresponding improvements in a battery technology. The demand for higher performance is thus in direct conflict with the battery life of the smart phone and this has in turn led to a lot of innovation in the field of power management. This includes a lot of advanced power management features built into an Operating System (OS) itself along with advancements in display technology like active-matrix organic light-emitting diode (AMOLED). This eventually led to a silicon on chip (SoC) design, where the processing of the performance-intensive power-hungry “big” cores are coupled with a power-saving “LITTLE” cores in the same system joined by a cache coherent interconnect fabric. This architecture is called a big.LITTLE™ architecture.
The Completely Fair scheduler (CFS) is a task based scheduler in Linux operating system. The CFS schedules the entities on cores based on the execution history of the entities. The Task scheduler was not intrinsically built to take advantage of a Heterogeneous Multiprocessing (HMP) System like big.LITTLE™ architecture but was designed for a Symmetric Multiprocessing (SMP) System. This led to a set of patches that added information regarding the per-entity utilization of a core to the CFS.
The CFS algorithm primarily tracks the amount of time that a scheduling entity has run on a virtualized ideal multi-tasking processor. If a particular scheduling entity has run for a lesser virtual time than the entity that is currently executing on the processor, the fairness of the system is not maintained anymore. Hence, the entity that is currently running is pre-empted by the entity that has run for a lesser amount of time to maintain fairness. This system works efficiently for the SMP system as all the cores are equal and the Scheduler can treat them as the same. However, this does not hold good for the HMP system. In the current HMP implementation, a scheduling entity is classified as a big or a small entity based on its execution history calculated by any of per-entity Load tracking method and Window based tracking. When the load determined form this execution history exceeds a predefined threshold, the corresponding entity is categorized as a big entity or otherwise as a small entity. This is then placed on the big or little cluster correspondingly.
In the conventional systems and methods, the task scheduling is based on the load history of the task. If the load contribution of the entity exceeds a predefined load threshold, then the task is scheduled on the big cores irrespective of the characteristic of the task. This eventually affects the user experience and the battery life of the system. In an example, if the task is a background task which does not need the additional processing power of the big cores, may be scheduled on the big cores when the the load contribution of the entity exceeds a predefined load threshold. This increases the power consumption of the electronic device as the big cores are performance intensive.